﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GestionSaludOcupacional.Portal.Base;
using GestionSaludOcupacional.Portal.Base.Models;

namespace GestionSaludOcupacional.Infrastructure.Services
{
    public interface IHealthService
    {
        #region Individuos...
        IEnumerable<Individuo> ObtenerIndividuos();
        bool CrearIndividuo(Individuo individuo);
        bool ActualizarIndividuo(Individuo individuo);

        Individuo ObtenerIndividuo(int id);
        #endregion

        #region Medicos...
        IEnumerable<MedicoModel> ObtenerMedicos();
        void CrearMedico(MedicoModel medico);
        MedicoModel ObtenerMedico(int id);
        #endregion

        #region Citas...
        bool CrearCita(Cita cita);
        Cita ObtenerCita(int id);
        IEnumerable<Cita> ObtenerCitas(int idIndividuo);
        IEnumerable<Cita> ObtenerCitasExamen(string examen);
        #endregion

        #region Historia Clinica...
        int CrearHistoriaClinica(HistoriaClinica historiaClinica);
        bool CrearIncidenteHistoria(HistoriaClinicaRegistro historiaClinicaRegistro);
        bool ActualizarIncidenteHistoria(HistoriaClinicaRegistro historiaClinicaRegistro);
        HistoriaClinica ObtenerHistoriaClinica(int id);
        HistoriaClinica ObtenerHistoriaClinicaIndividuo(int noIdentificacion);
        HistoriaClinicaRegistro ObtenerHistoriaClinicaRegistro(int registroId);
        IEnumerable<HistoriaClinicaRegistro> ObtenerHistoriaClinicaRegistrosByIndividuo(int individuoId);

        #endregion

        #region Examenes...

        bool GuardarExamenVision(ExamenVision examenVision);
        bool GuardarExamenPsicosensometria(ExamenPsicosensometria examenPsicosensometria);
        bool GuardarExamenPsicologia(ExamenPsicologia examenPsicologia);
        bool GuardarExamenAudicion(ExamenAudicion examenAudicion);

        ExamenVision ObtenerExamenVision(int id);
        IEnumerable<ExamenVision> ObtenerExamenVisionByIndividuo(int individuoId);

        ExamenPsicosensometria ObtenerExamenPsicosensometria(int id);
        IEnumerable<ExamenPsicosensometria> ObtenerExamenPsicosensometriaByIndividuo(int individuoId);

        ExamenPsicologia ObtenerExamenPsicologia(int id);
        IEnumerable<ExamenPsicologia> ObtenerExamenPsicologiaByIndividuo(int individuoId);

        ExamenAudicion ObtenerExamenAudicion(int id);
        IEnumerable<ExamenAudicion> ObtenerExamenAudicionByIndividuo(int individuoId);


        #endregion
    }
}
